package com.abewy.android.apps.klyph.core.graph.serializer;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import com.abewy.android.apps.klyph.core.graph.Application;
import com.abewy.android.apps.klyph.core.graph.GraphObject;
import com.abewy.android.apps.klyph.core.graph.Link;
import com.abewy.android.apps.klyph.core.graph.Photo;
import com.abewy.android.apps.klyph.core.graph.Post;
import com.abewy.android.apps.klyph.core.graph.Post.Action;
import com.abewy.android.apps.klyph.core.graph.Post.Privacy;
import com.abewy.android.apps.klyph.core.graph.UserRef;
import com.abewy.android.apps.klyph.core.graph.Video;
public class PostDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Post post = new Post();
deserializePrimitives(post, data);
post.setFrom((UserRef) new UserRefDeserializer().deserializeObject(getJsonObject(data, "from")));
post.setApplication((Application) new ApplicationDeserializer().deserializeObject(getJsonObject(data, "application")));
post.setPrivacy((Privacy) new PrivacyDeserializer().deserializeObject(getJsonObject(data, "privacy")));
JSONObject to = data.optJSONObject("to");
if (to != null)
{
JSONArray toArray = to.optJSONArray("data");
if (toArray != null && toArray.length() > 0)
{
post.setTo(new UserRefDeserializer().deserializeArray(toArray, UserRef.class));
}
else
{
post.setTo(new ArrayList<UserRef>());
}
}
else
{
post.setTo(new ArrayList<UserRef>());
}
if (data.optJSONArray("with_tags") != null)
post.setWith_tags(new UserRefDeserializer().deserializeArray(getJsonArray(data, "with_tags"), UserRef.class));
else
post.setWith_tags(new ArrayList<UserRef>());
if (data.optJSONArray("actions") != null)
post.setActions(new ActionDeserializer().deserializeArray(getJsonArray(data, "actions"), Action.class));
else
post.setActions(new ArrayList<Action>());
if (data.optJSONArray("message_tags") != null)
post.setMessage_tags(new TagDeserializer().deserializeMap(getJsonArray(data, "message_tags")));
else
post.setMessage_tags(new TagDeserializer().deserializeMap(getJsonObject(data, "message_tags")));
if (data.optJSONArray("story_tags") != null)
post.setStory_tags(new TagDeserializer().deserializeMap(getJsonArray(data, "story_tags")));
else
post.setStory_tags(new TagDeserializer().deserializeMap(getJsonObject(data, "story_tags")));
if (data.optJSONObject("photoObject") != null)
post.setPhotoObject((Photo) new PhotoDeserializer().deserializeObject(getJsonObject(data, "photoObject")));
if (data.optJSONObject("videoObject") != null)
post.setVideoObject((Video) new VideoDeserializer().deserializeObject(getJsonObject(data, "videoObject")));
if (data.optJSONObject("linkObject") != null)
post.setLinkObject((Link) new LinkDeserializer().deserializeObject(getJsonObject(data, "linkObject")));
return post;
}
private static class ActionDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Action action = new Action();
deserializePrimitives(action, data);
return action;
}
}
private static class PrivacyDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Privacy privacy = new Privacy();
deserializePrimitives(privacy, data);
return privacy;
}
}
}